The development of databases and database schemas is increasingly complex. Typically, database development and management involves running database instances in multiple environments. It is not uncommon, for example, to use three environments with potentially differing schema: a development environment; a quality assurance (QA) environment; and a production environment. The development environment is used in the authoring of the database structure. The QA environment allows for testing of the applications and enhancements that use the database. The production environment is the final database for general use. For example, the production environment may be a cloud computing system, an enterprise content management system or other system that makes use of the database.
Changes in a schema in a development environment may be migrated to the QA and production environments. At various times, the different environments may have different schema. Moreover, multiple instances of a database in the same environment may be using different versions of a schema depending on when the database was last updated. This can result in errors when changes are migrated from one database to another.
Conventionally, schema management is handled through the generation, review, and execution of SQL scripts executed against the target database instance. Building a new database or modifying an existing database may be dependent on hundreds of small scripts to build out new environments or evaluate existing ones. Once executed, the scripts generally leave no history of their passing other than the presence of the pieces they create, delete or modify. Thus, it can be difficult to reproduce how schema changes were applied. Moreover, there is no traceable history of who did what and why from environment to environment. Application issues caused by database errors become hard to troubleshoot because there is no easily digestible standard to use as measuring stick in evaluating a malfunctioning environment.
In view of unique challenges in authoring, discovering, and migrating database structure changes, there is room for innovations and improvements.